package com.immediatus.options;

import com.immediatus.engine.contracts.IResolutionPolicy;
import com.immediatus.graphics.camera.Camera;

public class EngineOptions{
    private final boolean _fullscreen;
    private final ScreenOrientation _screenOrientation;
    private final IResolutionPolicy _resolutionPolicy;
    private final Camera _camera;

    private final TouchOptions _touchOptions = new TouchOptions();
    private final RenderOptions _renderOptions = new RenderOptions();

    private WakeLockOptions _wakeLockOptions = WakeLockOptions.SCREEN_BRIGHT;
    private int _updateThreadPriority = android.os.Process.THREAD_PRIORITY_DEFAULT;

    public EngineOptions(final boolean fullscreen_, final ScreenOrientation orientation_, final IResolutionPolicy resolutionPolicy_, final Camera camera_){
        this._fullscreen = fullscreen_;
        this._screenOrientation = orientation_;
        this._resolutionPolicy = resolutionPolicy_;
        this._camera = camera_;
    }

    public TouchOptions getTouchOptions(){
        return this._touchOptions;
    }

    public RenderOptions getRenderOptions(){
        return this._renderOptions;
    }

    public boolean isFullscreen(){
        return this._fullscreen;
    }

    public ScreenOrientation getScreenOrientation(){
        return this._screenOrientation;
    }

    public IResolutionPolicy getResolutionPolicy(){
        return this._resolutionPolicy;
    }

    public Camera getCamera(){
        return this._camera;
    }

    public int getUpdateThreadPriority(){
        return this._updateThreadPriority;
    }

    public void setUpdateThreadPriority(final int updateThreadPriority_){
        this._updateThreadPriority = updateThreadPriority_;
    }

    public WakeLockOptions getWakeLockOptions(){
        return this._wakeLockOptions;
    }

    public EngineOptions setWakeLockOptions(final WakeLockOptions wakeLockOptions_){
        this._wakeLockOptions = wakeLockOptions_;
        return this;
    }

    public static enum ScreenOrientation{ LANDSCAPE, PORTRAIT }
}